home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Freeware / Gobby 0.4.7 / gobby-0.4.7.exe / {app} / share / gtksourceview-2.0 / language-specs / fortran.lang < prev    next >
Extensible Markup Language  |  2008-09-09  |  13KB  |  428 lines

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!--
  3.  
  4.  Author: John Spray <jcspray@icculus.org>
  5.  Copyright (C) 2004, 2005, 2006 John Spray <jcs116@york.ac.uk>
  6.  Copyright (C) 2005 Jerry DeLisle <jvdelisle@verizon.net>
  7.  
  8.  This library is free software; you can redistribute it and/or
  9.  modify it under the terms of the GNU Library General Public
  10.  License as published by the Free Software Foundation; either
  11.  version 2 of the License, or (at your option) any later version.
  12.  
  13.  This library is distributed in the hope that it will be useful,
  14.  but WITHOUT ANY WARRANTY; without even the implied warranty of
  15.  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  16.  Library General Public License for more details.
  17.  
  18.  You should have received a copy of the GNU Library General Public
  19.  License along with this library; if not, write to the
  20.  Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  21.  Boston, MA 02111-1307, USA.
  22.  
  23. -->
  24. <language id="fortran" _name="Fortran 95" version="2.0" _section="Sources">
  25.   <metadata>
  26.     <property name="mimetypes">text/x-fortran</property>
  27.     <property name="globs">*.f;*.f9[05];*.for</property>
  28.     <property name="line-comment-start">!</property>
  29.   </metadata>
  30.  
  31.   <styles>
  32.     <style id="comment" _name="Comment" map-to="def:comment"/>
  33.     <style id="floating-point" _name="Floating Point" map-to="def:floating-point"/>
  34.     <style id="keyword" _name="Keyword" map-to="def:keyword"/>
  35.     <style id="boz-literal" _name="BOZ Literal" map-to="def:base-n-integer"/>
  36.     <style id="decimal" _name="Decimal" map-to="def:decimal"/>
  37.     <style id="type" _name="Data Type" map-to="def:type"/>
  38.   </styles>
  39.  
  40.   <default-regex-options case-sensitive="false"/>
  41.  
  42.   <definitions>
  43.  
  44.     <!-- Note: contains an hack to avoid considering ^COMMON a comment -->
  45.     <context id="line-comment" style-ref="comment" end-at-line-end="true">
  46.       <start>!|(^[Cc](\b|[^Oo]))</start>
  47.       <include>
  48.         <context ref="def:escape"/>
  49.         <context ref="def:in-line-comment"/>
  50.       </include>
  51.     </context>
  52.  
  53.     <context id="operators" style-ref="keyword">
  54.       <prefix>\.</prefix>
  55.       <suffix>\.</suffix>
  56.       <keyword>TRUE</keyword>
  57.       <keyword>FALSE</keyword>
  58.       <keyword>NOT</keyword>
  59.       <keyword>AND</keyword>
  60.       <keyword>OR</keyword>
  61.       <keyword>XOR</keyword>
  62.       <keyword>EQV</keyword>
  63.       <keyword>NEQV</keyword>
  64.       <keyword>EQ</keyword>
  65.       <keyword>NE</keyword>
  66.       <keyword>GT</keyword>
  67.       <keyword>GE</keyword>
  68.       <keyword>LT</keyword>
  69.       <keyword>LE</keyword>
  70.     </context>
  71.  
  72.     <context id="keywords" style-ref="keyword">
  73.       <keyword>block data</keyword>
  74.       <keyword>CALL</keyword>
  75.       <keyword>case</keyword>
  76.       <keyword>common</keyword>
  77.       <keyword>contains</keyword>
  78.       <keyword>continue</keyword>
  79.       <keyword>cycle</keyword>
  80.       <keyword>data</keyword>
  81.       <keyword>do</keyword>
  82.       <keyword>elseif</keyword>
  83.       <keyword>else</keyword>
  84.       <keyword>elsewhere</keyword>
  85.       <keyword>enddo</keyword>
  86.       <keyword>endif</keyword>
  87.       <keyword>end</keyword>
  88.       <keyword>external</keyword>
  89.       <keyword>forall</keyword>
  90.       <keyword>function</keyword>
  91.       <keyword>goto</keyword>
  92.       <keyword>if</keyword>
  93.       <keyword>implicit none</keyword>
  94.       <keyword>include</keyword>
  95.       <keyword>intrinsic</keyword>
  96.       <keyword>kind</keyword>
  97.       <keyword>len</keyword>
  98.       <keyword>module</keyword>
  99.       <keyword>program</keyword>
  100.       <keyword>return</keyword>
  101.       <keyword>save</keyword>
  102.       <keyword>SELECT</keyword>
  103.       <keyword>stop</keyword>
  104.       <keyword>subroutine</keyword>
  105.       <keyword>then</keyword>
  106.       <keyword>type</keyword>
  107.       <keyword>use</keyword>
  108.       <keyword>where</keyword>
  109.       <keyword>while</keyword>
  110.     </context>
  111.  
  112.     <context id="read-write" style-ref="keyword">
  113.       <keyword>backspace</keyword>
  114.       <keyword>close</keyword>
  115.       <keyword>inquire</keyword>
  116.       <keyword>open</keyword>
  117.       <keyword>rewind</keyword>
  118.       <keyword>endfile</keyword>
  119.       <keyword>read</keyword>
  120.       <keyword>write</keyword>
  121.       <keyword>print</keyword>
  122.     </context>
  123.  
  124.     <context id="input-output" style-ref="keyword">
  125.       <keyword>unit</keyword>
  126.       <keyword>file</keyword>
  127.       <keyword>iostat</keyword>
  128.       <keyword>access</keyword>
  129.       <keyword>blank</keyword>
  130.       <keyword>fmt</keyword>
  131.       <keyword>form</keyword>
  132.       <keyword>recl</keyword>
  133.       <keyword>status</keyword>
  134.       <keyword>exist</keyword>
  135.       <keyword>opened</keyword>
  136.       <keyword>number</keyword>
  137.       <keyword>named</keyword>
  138.       <keyword>name</keyword>
  139.       <keyword>sequential</keyword>
  140.       <keyword>direct</keyword>
  141.       <keyword>rec</keyword>
  142.       <keyword>formatted</keyword>
  143.       <keyword>unformatted</keyword>
  144.       <keyword>nextrec</keyword>
  145.       <keyword>pad</keyword>
  146.       <keyword>position</keyword>
  147.       <keyword>action</keyword>
  148.       <keyword>delim</keyword>
  149.       <keyword>readwrite</keyword>
  150.       <keyword>eor</keyword>
  151.       <keyword>advance</keyword>
  152.       <keyword>nml</keyword>
  153.     </context>
  154.  
  155.     <context id="intrinsics" style-ref="keyword">
  156.       <keyword>adjustl</keyword>
  157.       <keyword>adjustr</keyword>
  158.       <keyword>all</keyword>
  159.       <keyword>allocated</keyword>
  160.       <keyword>any</keyword>
  161.       <keyword>associated</keyword>
  162.       <keyword>bit_size</keyword>
  163.       <keyword>btest</keyword>
  164.       <keyword>ceiling</keyword>
  165.       <keyword>count</keyword>
  166.       <keyword>cshift</keyword>
  167.       <keyword>date_and_time</keyword>
  168.       <keyword>digits</keyword>
  169.       <keyword>dim</keyword>
  170.       <keyword>dot_product</keyword>
  171.       <keyword>dprod</keyword>
  172.       <keyword>eoshift</keyword>
  173.       <keyword>epsilon</keyword>
  174.       <keyword>exponent</keyword>
  175.       <keyword>floor</keyword>
  176.       <keyword>fraction</keyword>
  177.       <keyword>huge</keyword>
  178.       <keyword>iand</keyword>
  179.       <keyword>ibclr</keyword>
  180.       <keyword>ibits</keyword>
  181.       <keyword>ibset</keyword>
  182.       <keyword>ieor</keyword>
  183.       <keyword>ior</keyword>
  184.       <keyword>ishft</keyword>
  185.       <keyword>ishftc</keyword>
  186.       <keyword>lbound</keyword>
  187.       <keyword>len_trim</keyword>
  188.       <keyword>matmul</keyword>
  189.       <keyword>maxexponent</keyword>
  190.       <keyword>maxloc</keyword>
  191.       <keyword>maxval</keyword>
  192.       <keyword>merge</keyword>
  193.       <keyword>minexponent</keyword>
  194.       <keyword>minloc</keyword>
  195.       <keyword>minval</keyword>
  196.       <keyword>modulo</keyword>
  197.       <keyword>mvbits</keyword>
  198.       <keyword>nearest</keyword>
  199.       <keyword>pack</keyword>
  200.       <keyword>present</keyword>
  201.       <keyword>product</keyword>
  202.       <keyword>radix</keyword>
  203.       <keyword>random_number</keyword>
  204.       <keyword>random_seed</keyword>
  205.       <keyword>range</keyword>
  206.       <keyword>repeat</keyword>
  207.       <keyword>reshape</keyword>
  208.       <keyword>rrspacing</keyword>
  209.       <keyword>scale</keyword>
  210.       <keyword>selected_int_kind</keyword>
  211.       <keyword>selected_real_kind</keyword>
  212.       <keyword>scan</keyword>
  213.       <keyword>shape</keyword>
  214.       <keyword>size</keyword>
  215.       <keyword>spacing</keyword>
  216.       <keyword>spread</keyword>
  217.       <keyword>set_exponent</keyword>
  218.       <keyword>tiny</keyword>
  219.       <keyword>transpose</keyword>
  220.       <keyword>trim</keyword>
  221.       <keyword>ubound</keyword>
  222.       <keyword>unpack</keyword>
  223.       <keyword>verify</keyword>
  224.       <keyword>precision</keyword>
  225.       <keyword>sum</keyword>
  226.       <keyword>system_clock</keyword>
  227.       <keyword>abs</keyword>
  228.       <keyword>acos</keyword>
  229.       <keyword>aimag</keyword>
  230.       <keyword>aint</keyword>
  231.       <keyword>anint</keyword>
  232.       <keyword>asin</keyword>
  233.       <keyword>atan</keyword>
  234.       <keyword>atan2</keyword>
  235.       <keyword>cos</keyword>
  236.       <keyword>sin</keyword>
  237.       <keyword>tan</keyword>
  238.       <keyword>sinh</keyword>
  239.       <keyword>cosh</keyword>
  240.       <keyword>tanh</keyword>
  241.       <keyword>exp</keyword>
  242.       <keyword>log</keyword>
  243.       <keyword>log10</keyword>
  244.       <keyword>sign</keyword>
  245.       <keyword>sqrt</keyword>
  246.       <keyword>int</keyword>
  247.       <keyword>cmplx</keyword>
  248.       <keyword>nint</keyword>
  249.       <keyword>min</keyword>
  250.       <keyword>max</keyword>
  251.       <keyword>conjg</keyword>
  252.       <keyword>char</keyword>
  253.       <keyword>ichar</keyword>
  254.       <keyword>index</keyword>
  255.       <keyword>cabs</keyword>
  256.       <keyword>ccos</keyword>
  257.       <keyword>cexp</keyword>
  258.       <keyword>clog</keyword>
  259.       <keyword>csin</keyword>
  260.       <keyword>csqrt</keyword>
  261.       <keyword>dacos</keyword>
  262.       <keyword>dasin</keyword>
  263.       <keyword>datan</keyword>
  264.       <keyword>datan2</keyword>
  265.       <keyword>dcos</keyword>
  266.       <keyword>dcosh</keyword>
  267.       <keyword>ddim</keyword>
  268.       <keyword>dexp</keyword>
  269.       <keyword>dint</keyword>
  270.       <keyword>dlog</keyword>
  271.       <keyword>dlog10</keyword>
  272.       <keyword>dmod</keyword>
  273.       <keyword>dabs</keyword>
  274.       <keyword>dnint</keyword>
  275.       <keyword>dsign</keyword>
  276.       <keyword>dsin</keyword>
  277.       <keyword>dsinh</keyword>
  278.       <keyword>dsqrt</keyword>
  279.       <keyword>dtan</keyword>
  280.       <keyword>dtanh</keyword>
  281.       <keyword>iabs</keyword>
  282.       <keyword>idim</keyword>
  283.       <keyword>idnint</keyword>
  284.       <keyword>isign</keyword>
  285.       <keyword>idint</keyword>
  286.       <keyword>ifix</keyword>
  287.       <keyword>amax0</keyword>
  288.       <keyword>amax1</keyword>
  289.       <keyword>dmax1</keyword>
  290.       <keyword>max0</keyword>
  291.       <keyword>max1</keyword>
  292.       <keyword>amin0</keyword>
  293.       <keyword>amin1</keyword>
  294.       <keyword>dmin1</keyword>
  295.       <keyword>loc</keyword>
  296.       <keyword>min0</keyword>
  297.       <keyword>min1</keyword>
  298.       <keyword>amod</keyword>
  299.       <keyword>float</keyword>
  300.       <keyword>sngl</keyword>
  301.       <keyword>alog</keyword>
  302.       <keyword>alog10</keyword>
  303.       <keyword>cdabs</keyword>
  304.       <keyword>cdcos</keyword>
  305.       <keyword>cdexp</keyword>
  306.       <keyword>cdlog</keyword>
  307.       <keyword>cdsin</keyword>
  308.       <keyword>cdsqrt</keyword>
  309.       <keyword>cqabs</keyword>
  310.       <keyword>cqcos</keyword>
  311.       <keyword>cqexp</keyword>
  312.       <keyword>cqlog</keyword>
  313.       <keyword>cqsin</keyword>
  314.       <keyword>cqsqrt</keyword>
  315.       <keyword>qacos</keyword>
  316.       <keyword>qasin</keyword>
  317.       <keyword>qatan</keyword>
  318.       <keyword>qatan2</keyword>
  319.       <keyword>qcos</keyword>
  320.       <keyword>qcosh</keyword>
  321.       <keyword>qdim</keyword>
  322.       <keyword>qexp</keyword>
  323.       <keyword>iqint</keyword>
  324.       <keyword>qlog</keyword>
  325.       <keyword>qlog10</keyword>
  326.       <keyword>qmod</keyword>
  327.       <keyword>qabs</keyword>
  328.       <keyword>qnint</keyword>
  329.       <keyword>qsign</keyword>
  330.       <keyword>qsin</keyword>
  331.       <keyword>qsinh</keyword>
  332.       <keyword>qsqrt</keyword>
  333.       <keyword>qtan</keyword>
  334.       <keyword>qtanh</keyword>
  335.       <keyword>qmax1</keyword>
  336.       <keyword>qmin1</keyword>
  337.       <keyword>dimag</keyword>
  338.       <keyword>qimag</keyword>
  339.       <keyword>dcmplx</keyword>
  340.       <keyword>qcmplx</keyword>
  341.       <keyword>dconjg</keyword>
  342.       <keyword>qconjg</keyword>
  343.       <keyword>gamma</keyword>
  344.       <keyword>dgamma</keyword>
  345.       <keyword>qgamma</keyword>
  346.       <keyword>algama</keyword>
  347.       <keyword>dlgama</keyword>
  348.       <keyword>qlgama</keyword>
  349.       <keyword>erf</keyword>
  350.       <keyword>derf</keyword>
  351.       <keyword>qerf</keyword>
  352.       <keyword>erfc</keyword>
  353.       <keyword>derfc</keyword>
  354.       <keyword>qerfc</keyword>
  355.       <keyword>dfloat</keyword>
  356.       <keyword>zabs</keyword>
  357.       <keyword>zcos</keyword>
  358.       <keyword>zexp</keyword>
  359.       <keyword>zlog</keyword>
  360.       <keyword>zsin</keyword>
  361.       <keyword>zsqrt</keyword>
  362.     </context>
  363.  
  364.     <context id="types" style-ref="type">
  365.       <keyword>REAL</keyword>
  366.       <keyword>INTEGER</keyword>
  367.       <keyword>CHARACTER</keyword>
  368.       <keyword>LOGICAL</keyword>
  369.       <keyword>COMPLEX</keyword>
  370.       <keyword>DOUBLE PRECISION</keyword>
  371.       <keyword>DOUBLE COMPLEX</keyword>
  372.       <keyword>BYTE</keyword>
  373.       <keyword>dimension</keyword>
  374.       <keyword>parameter</keyword>
  375.       <keyword>intent</keyword>
  376.       <keyword>private</keyword>
  377.       <keyword>optional</keyword>
  378.       <keyword>pointer</keyword>
  379.       <keyword>target</keyword>
  380.       <keyword>allocatable</keyword>
  381.     </context>
  382.  
  383.     <context id="floating-point-number" style-ref="floating-point">
  384.       <match extended="true">
  385.         (?<![\w\.])
  386.         [+-]?
  387.         ((\.[0-9]+ | [0-9]+\.[0-9]*) ([ed][+-]?[0-9]*)? |
  388.          ([0-9]+[ed][+-]?[0-9]*))
  389.         (?![\w\.])
  390.       </match>
  391.     </context>
  392.  
  393.     <context id="decimal" style-ref="decimal">
  394.       <match extended="true">
  395.         (?<![\w\.])
  396.         [+-]? ([1-9][0-9]*|0)
  397.         (?![\w\.])
  398.       </match>
  399.     </context>
  400.  
  401.     <context id="boz-literal" style-ref="boz-literal">
  402.       <match extended="true">
  403.         \bb'[01]+'|\bb"[01]+"|
  404.         \bo'[0-7]+'|\bo"[0-7]+"|
  405.         \bz'[0-9a-f]+'|\bz"[0-9a-f]+"
  406.       </match>
  407.     </context>
  408.  
  409.     <context id="fortran">
  410.       <include>
  411.         <context ref="floating-point-number"/>
  412.         <context ref="decimal"/>
  413.         <context ref="boz-literal"/>
  414.         <context ref="def:string"/>
  415.         <context ref="def:single-quoted-string"/>
  416.         <context ref="line-comment"/>
  417.         <context ref="operators"/>
  418.         <context ref="keywords"/>
  419.         <context ref="read-write"/>
  420.         <context ref="input-output"/>
  421.         <context ref="intrinsics"/>
  422.         <context ref="types"/>
  423.       </include>
  424.     </context>
  425.  
  426.   </definitions>
  427. </language>
  428.